home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / cmln0486.arc / DUMP.C < prev    next >
Text File  |  1986-04-06  |  2KB  |  48 lines

  1. /*    file:    DUMP.C
  2.     A dump utility that dumps bytes in the "right" order.
  3. */
  4. #include "stdio.h"
  5.  
  6. main(argc,argv)
  7. int    argc;
  8. char    *argv[];
  9. {
  10.     unsigned char buf[18];    /*input line of 16 bytes*/
  11.     FILE *in;            /*input file descriptor*/
  12.     int    i=0;            /*loop counter*/
  13.     long int addrs=0;        /*current position in file*/
  14.  
  15.     buf[16]=0;    /*force 17th byte to zero for string output*/
  16.     if ((in=fopen(argv[1],"rb")) == 0)    /*try to open user file*/
  17.     {
  18.     fprintf(stderr,"Can't open input file: %s\n",argv[1]);
  19.     exit(1);
  20.     }
  21.     if (argc > 2)        /*if there is a 2nd argument,*/
  22.     {
  23.     sscanf(argv[2],"%lx",&addrs);    /*assume it is a*/
  24.     fseek(in,addrs,0);        /*hex starting address*/
  25.     }
  26.     while (fread(buf,1,16,in) > 0)    /*dump until end of file*/
  27.     {
  28.     if ((addrs & 511) == 0)        /*print a header now and again*/
  29.     {
  30.         printf("\014\n\n\n\t\tDump of file %s\n",argv[1]);
  31.         printf("\t\t\t\t\t<--------: address:-------->\n");
  32.     }
  33.     for (i=15;i>=0;i--)        /*loop for each 16 bytes to dump*/
  34.     {
  35.         printf(" %02x",buf[i]);    /*print it in hex*/
  36.         if (buf[i]<32)        /*if it is a control character,*/
  37.         buf[i]='<';        /*print as a less than sign*/
  38.         if (buf[i]>127)        /*if it is del or has a sign bit*/
  39.         buf[i]='>';        /*print as a greater than sign*/
  40.     }
  41.     printf(" : %06X : %s\n",addrs,buf);    /*print address and ascii*/
  42.     addrs += 16L;            /*bump to next address*/
  43.     for (i=0;i<16;i++)        /*to fill last line correctly,*/
  44.         buf[i]= 'Z' & 0x1f;        /*init buffer to control-Z's*/
  45.     }
  46.     exit(0);
  47. }
  48.